package com.ruoyi.service;

import com.ruoyi.domain.UserDeviceData;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @className UserDeviceDataService
 *
 * @author lifei
 * @date 2025-01-14
 */
public interface UserDeviceDataService {

    /**
     * 获取用户所有最新健康数据
     *
     * @param userId 用户ID
     * @return 用户所有最新健康数据
     */
    List<UserDeviceData> getUserLatestData(long userId);

    /**
     * 根据日期获取用户健康数据
     *
     * @param requestBody 请求体，包含用户 ID（userId）、开始日期（startDate）和结束日期（endDate）
     *                   用于查询指定日期范围内的用户健康数据。
     *                   <ul>
     *                     <li>userId: 用户的唯一标识符。</li>
     *                     <li>startDate: 查询数据的开始日期，格式为 yyyy-MM-dd。</li>
     *                     <li>endDate: 查询数据的结束日期，格式为 yyyy-MM-dd。</li>
     *                   </ul>
     * @return 返回用户在指定日期范围内的健康数据列表。
     */
    List<UserDeviceData> getUserDataByDate(Map<String, Object> requestBody);

    /**
     * app获取性别、身高、年龄
     *
     * @param userId 用户ID
     * @return 用户数据列表
     */
    List<UserDeviceData> getUserInfoByUserId(long userId);

    /**
     * 获取最近七次用户健康数据
     *
     * @param userId 用户ID
     * @return 用户健康数据列表
     */
    List<UserDeviceData> getWeekUserLastestSleepTimeData(long userId);

    /**
     * 获取用户最近五次血氧数据
     *
     * @param userId 用户ID
     * @return 睡眠数据列表
     */
    List<UserDeviceData> selectUserFiveBloodOxygenData(long userId);

    // 根据用户ID和目标时间获取步数
    Integer getTotalSteps(Long userId, Date goalDate);

    // 根据用户ID和目标时间获取运动时间
    Integer getTotalActiveMinutes(Long userId, Date goalDate);


    Integer selectActiveMinutes(Long userId);
}
